import Head from "next/head"; import { useEffect, useState } from "react"; import { getServerSession } from "next-auth/next"; import { authOptions } from "../../../api/auth/[...nextauth]"; import Navigasi from "../../../../components/home/staticNav"; import PrimarySide from "../../../../components/anime/watch/primarySide"; import SecondarySide from "../../../../components/anime/watch/secondarySide"; import { createList, createUser, getEpisode } from "../../../../prisma/user"; export default function Info({ sessions, watchId, provider, epiNumber, dub, info, userData, proxy, disqus, }) { const [currentEpisode, setCurrentEpisode] = useState(null); const [loading, setLoading] = useState(false); const [artStorage, setArtStorage] = useState(null); const [episodesList, setepisodesList] = useState(); const [mapProviders, setMapProviders] = useState(null); const [onList, setOnList] = useState(false); const [origin, setOrigin] = useState(null); useEffect(() => { setLoading(true); setOrigin(window.location.origin); async function getInfo() { if (info.mediaListEntry) { setOnList(true); } const response = await fetch( `/api/v2/episode/${info.id}?releasing=${ info.status === "RELEASING" ? "true" : "false" }${dub ? "&dub=true" : ""}` ).then((res) => res.json()); const getMap = response.find((i) => i?.map === true) || response[0]; let episodes = response; if (getMap) { if (provider === "gogoanime" && !watchId.startsWith("/")) { episodes = episodes.filter((i) => { if (i?.providerId === "gogoanime" && i?.map !== true) { return null; } return i; }); } setMapProviders(getMap?.episodes); } if (episodes) { const getProvider = episodes?.find((i) => i.providerId === provider); const episodeList = dub ? getProvider?.episodes?.filter((x) => x.hasDub === true) : getProvider?.episodes.slice(0, getMap?.episodes.length); const playingData = getMap?.episodes.find( (i) => i.number === Number(epiNumber) ); if (getProvider) { setepisodesList(episodeList); const currentEpisode = episodeList?.find( (i) => i.number === parseInt(epiNumber) ); const nextEpisode = episodeList?.find( (i) => i.number === parseInt(epiNumber) + 1 ); const previousEpisode = episodeList?.find( (i) => i.number === parseInt(epiNumber) - 1 ); setCurrentEpisode({ prev: previousEpisode, playing: { id: currentEpisode.id, title: playingData?.title, description: playingData?.description, image: playingData?.image, number: currentEpisode.number, }, next: nextEpisode, }); } else { setLoading(false); } } setArtStorage(JSON.parse(localStorage.getItem("artplayer_settings"))); // setEpiData(episodes); setLoading(false); } getInfo(); return () => { setCurrentEpisode(null); }; }, [sessions?.user?.name, epiNumber, dub]); return ( <>